import axios from "axios"
import Vue from "vue"
import { Toast } from 'vant';
Vue.use(Toast);

const instance = axios.create({
    baseURL: "http://kumanxuan1.f3322.net:8001",  //基本路径
    timeout: 5000
})

// 请求拦截器
instance.interceptors.request.use(config => {
    // 什么时候会执行这里的代码?  发送请求之前
    // 这里的config是一个axios帮我们封装好的关于本次请求详情的一个对象
    // console.log(111);
    // console.log("config为:",config);

    // 在这个函数中,可以去做一些请求发出去之前的准备工作,例如把token值添加到请求头
    let token = localStorage.getItem("token")
    if (token) {
        //     // 把token设置到请求头中 
        config.headers['X-Nideshop-Token'] = token
    }

    Toast.loading({
        message: '加载中...',
        forbidClick: true,
    });


    // 每次都需要返回config才能成功发出请求
    return config;
}, err => {
    return Promise.reject(err)
})


// 响应拦截器
// 对数据做统一处理
instance.interceptors.response.use(res => {
    // 这里的res就是组件中最终获取到的res
    // 什么时候执行这里的代码?  接收到响应之后,组件中then方法执行之前的代码
    // console.log(222);
    // console.log("相应拦截器的res",res);
    // return res

    // 统一管理错误提示，判断res.errno是不是为0， 如果不为0，就console.log(res.errmsg)
    let data = res.data
    if (data.errno !== 0) {
        console.log("响应拦截器中:", data.errno || "网络出错");
    }

    // 手动清除请求加载 Toast
    // 请求发送，成功获取数据
    Toast.clear();

    return data  //直接获取到data里面的数据
    // 第一层data是axios封装的,第二层data是后端给的
}, err => {
    return Promise.reject(err)
})



export default instance